package io.swagger.annotations;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * Represents a single parameter in an API Operation.
 * <p/>
 * While {@link ApiParam} is bound to a JAX-RS parameter, method or field, this
 * allows you to manually define a parameter in a fine-tuned manner. This is the
 * only way to define parameters when using Servlets or other non-JAX-RS
 * environments.
 * <p/>
 * This annotation must be used as a value of {@link ApiImplicitParams} in order
 * to be parsed.
 *
 * @see ApiImplicitParams
 */
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface ApiImplicitParam {

	String name() default "";

	String value() default "";

	String defaultValue() default "";

	String allowableValues() default "";

	boolean required() default false;

	String access() default "";

	boolean allowMultiple() default false;

	String dataType() default "";

	String paramType() default "";
	int max() default Integer.MAX_VALUE;
}
